Some modern electronic circuit designs, such as the designs of electronic circuits integrated onto a metal substrate (often referred to as “integrated circuits” or “IC chips”), have become extremely complex. As a result, various techniques have been developed to verify that circuit designs will operate as desired before they are implemented in an expensive manufacturing process. For example, some circuit designers now employ software instructions to simulate the operation of a circuit design using a computing device. Such circuit simulation software programs or “simulators” can be used to verify the functional and/or timing characteristics of a circuit design.
In some instances, however, software that simulates a large circuit may operate many orders of magnitude slower than the actual circuit would operate. In an effort to verify circuit designs more quickly, some verification techniques emulate portions of an electronic circuit design using actual electronic circuit components. That is, one or more portions of a circuit design are emulated with an emulation circuit or “emulator.” The emulator typically is made up of electronic components that can be more easily configured into the designed circuit than actually manufacturing the designed circuit itself. For example, some verification techniques may verify a circuit design using an emulator formed of one or more field programmable gate arrays (FPGA) or similar types of programmable devices. Some vendors even have developed specialized devices specifically to emulate circuit designs.
For many situations, a circuit designer or tester may use both a hardware emulator and a software simulator to verify a circuit design. For example, a circuit designer may use one or more emulators to emulate the most complex components in a design, and then use one or more simulators to verify the other components of the design. In such an environment, the simulators and the emulators may need to communicate with each other, in order to reproduce the communication that would actually take place between the various components of the circuit being verified.
With some circuit designs, the number of data and control signals that need to be communicated between the portion of the circuit being emulated in hardware and the portion of the circuit being simulated in software may be substantial. Because the emulator may only have a fixed number of physical contacts (e.g., contact pins) with the simulator, however, the number of communication pathways for these signals may be limited. Thus, it is desirable to reduce the communication overhead between the emulator and the simulator by allowing data signals to be more transferred at a faster rate over these communication pathways. More particularly, it is desirable to allow data exchanged between a simulator and an emulator to be more quickly processed, to thereby speed up the test of a circuit design.